package com.waitingresult.zuo;

import java.util.Arrays;

/**
 * @Author: WangShuai
 * @CreateTime: 2022-10-24  19:34
 * @Description: 随机函数  从1-5的随机数，变成1-7的随机数
 * @Version: 1.0
 */
public class Random {


    public static void main(String[] args) {
        // checkF1();
        //checkF2();
        /**
         * 检查f2 方法 得到 1-5的概率
         */

        int[] count = new int[8];
        for (int i = 0; i < 100000000; i++) {
            int index = ((f2() << 2 )+ (f2() << 1) + (f2())) ;
            count[index]++;
        }
        for (int i : count) {
            System.out.print(i + "  ");
        }
    }

    /**
     * 1-5的随机数
     *
     * @return
     */
    public static int f1() {
        return (int) (Math.random() * 5) + 1;
    }

    /**
     * 检查f1 方法 得到 1-5的概率
     */
    public static void checkF1() {
        int[] count = new int[6];
        for (int i = 0; i < 100000000; i++) {
            count[f1()]++;
        }
        for (int i : count) {
            System.out.print(i + "  ");
        }
    }

    /**
     * 把1-5的随机数， 转换成 0-1的等概率
     *
     * @return
     */
    public static int f2() {
        int num;
        do {
            num = f1();
        } while (num == 3);
        return num < 3 ? 1 : 0;
    }

    /**
     * 检查 0-1的概率 是否为等概率 二分查找
     */
    public static void checkF2() {
        int[] count = new int[2];
        for (int i = 0; i < (100_000); i++) {
            count[f2()]++;
        }
        System.err.println(Arrays.toString(count));
    }
}
